home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dr.bub / 96000.lha / 96000 / appb / b132.asm < prev    next >
Assembly Source File  |  1992-04-28  |  3KB  |  85 lines

  1. ; This program was originally published in the Motorola DSP96002 Users Manual
  2. ; and is provided under a DISCLAIMER OF WARRANTY available from Motorola DSP
  3. ; Operation, 6501 William Cannon Drive West, Austin, Texas 78735-8598.  For
  4. ; more information, refer to the DSP96002 Users Manual, Appendix B, DSP
  5. ; Benchmarks.
  6. ;
  7. ; B.1.32    Signed Integer Divide  
  8. ;The signed integer divide operation divides two 32 bit signed two's  complement integers.  The divide 
  9. ;operation uses a one quadrant restoring divide iteration to divide the operands. The following code 
  10. ;divides  d5/d2 with the resulting quotient in d0.  
  11. ;
  12. ;             Signed 32 Bit Integer                          Program    ICycles 
  13.              Division of d0 = d5/d2                         Words 
  14.     eor    d2,d5   d5.l,d0.l  ;determine final sign        1        1 
  15.     abs    d2      d0.l,d3.l  ;make divisor positive       1        1 
  16.     abs    d0                 ;make dividend positive      1        1 
  17.     do     #32,dloop          ;32 quotient bits            2        3 
  18.     rol    d0                 ;dividend bit out, q bit in  1        1 
  19.     rol    d1                 ;put in temp                 1        1 
  20.     cmp    d2,d1              ;check for q bit             1        1 
  21.     sub    d2,d1    ifcc      ;update if less              1        1 
  22. dloop 
  23.     rol    d0                 ;last q bit                  1        1 
  24.     not    d0                 ;complement q bits           1        1 
  25.     tst    d5                 ;check sign of result        1        1 
  26.     neg    d0       iflt      ;negate if needed            1        1 
  27.     tst    d3
  28.     neg    dl       iflt
  29. ;                                                          ---      --- 
  30. ;                                                  Totals:  13      138 
  31.  
  32. ;The final remainder is destroyed in the generation of the quotient.  This  program may calculate only 
  33. ;the number of quotient bits required and has  variable execution time.  
  34.  
  35. ;              Signed 32 Bit Integer                         
  36. ;        Division of d0 = d0/d1,  d0 >= d1                   
  37.     abs    d1    d1.l,d2.l
  38.     eor    d0,d2
  39.     abs    d0    d2.l,d1.m
  40.     cmp    d1,d0    d0.l,d2.m
  41.     eor    d0,d0    iflo
  42.     jlo    divdone
  43.     bfind    d0,d0    d3.l,d8.l
  44.     bfind    d1,d2    d0.h,d0.l
  45.     movei    #32,d3
  46.     move        d2.h,d2.l
  47.     sub    d0,d2    d2.m,d0.l
  48.     inc    d2    d2.l,d2.h
  49.     sub    d2,d3
  50.     lsl    d2,d1    d3.l,d2.h
  51.     do    d2.l,divloop_fast
  52.     cmp    d1,d0
  53.     sub    d1,d0    ifhs
  54.     rol    d0
  55. divloop_fast     not    d0    d8.l,d3.l
  56.     lsl    d2,d0
  57.     lsr    d2,d0    d1.m,d2.l
  58.     tst    d2
  59.     neg    d0    ifmi
  60. divdone
  61.  
  62. ;The final quotient is destroyed in the generation of the  remainder.  This program calculates only the 
  63. ;number of quotient bits  required and has variable execution time.  
  64.  
  65. ;               Signed 32 Bit Integer                        
  66. ;        Remainder of d0 = d0 rem d1,  d0 >= d1              
  67.     abs    d1    d0.l,d2.l
  68.     abs    d2    d0.l,d1.m
  69.     cmp    d1,d2    d2.l,d2.m
  70.     jlo    divdone
  71.     bfind    d2,d0
  72.     bfind    d1,d2    d0.h,d0.l
  73.     move        d2.h,d2.l
  74.     sub    d0,d2    d2.m,d0.l
  75.     inc    d2    d2.l,d2.h
  76.     lsl    d2,d1    d2.l,d2.h
  77.     do    d2.l,remloop_fast
  78.     cmp    d1,d0
  79.     sub    d1,d0    ifhs
  80.     rol    d0
  81. remloop_fast    lsr    d2,d0    d1.m,d2.l
  82.     tst    d2
  83.     neg    d0    ifmi
  84. divdone
  85.